In today's computerized world an increasing amount of data is stored in electronic format. In many cases, such data may exist only in electronic form, making the security and recovery of such data of utmost importance, as the data cannot be recovered in any other manner. Many data storage systems thus include a set of distributed locations where the data can be stored and they function to replicate data stored in one location to other locations so that the data can be recovered in the event of a device failure, network failure or disaster that prevents the data from being accessed from the initial storage location.
The methods used to replicate the data vary between different data storage systems. In some existing data replication schemes, a server will read/write data from/to the same storage volume unless the storage volume is unavailable, in which case the server will access a replicated copy of the data from another location that is hard coded.
In some other data replication schemes, storage locations are assigned a hard coded weight. For example, if a system has three replicated storage volumes named Volume1, Volume2, and Volume3, a hard coded weight is assigned to each volume such as 0, 1, 2. The available volume with the lowest assigned weight may be used unless the hard coded weights are manually changed. In other words, a first copy of data may be stored in Volume1 with weight 0, a second copy of the data may be stored in Volume 2 with weight 1, etc.
The methods used by such data storage systems to replicate data are, in general, inefficient. To illustrate in more detail, in today's highly distributed computer environment there may be a variety of factors that affect the speed of access to such storage. The dynamic nature of distributed and networked computer environments also means that such factors are dynamically changing and such changes may occur on a highly granular time scale and may change differently with respect to different computer devices within a distributed computer environment. Other factors may also affect the time it takes to complete data accesses in these storage systems, such as for example, whether the data access is a write or a read and the amount (size) of data to be read or written. Current data replication schemes, as has been discussed, may use the same storage volumes in the same order to replicate the data irrespective of any of these, or any other, factors. By adhering to such rigid data replication schemes these data storage systems neglect to account for available bandwidth, differing bandwidths between different storage locations, whether the access is a read or a write, the size of the data being accessed or any of a number of other factors. By neglecting these factors access to data in these types of data storage systems may be inefficient, resulting in increased access times for user among other disadvantages.
What is desired then, are data storage systems that account for such factors in performing data replication to increase the efficiency and performance of data access in data storage systems by increasing efficiency in data replication.